package xyz.scootaloo.mono.security.util

/**
 * # security 模块专用关键字字典
 *
 * 此模块中重复出现的字符串变量, 通常表示某特别的意义, 收集在这里, 方便修改查看
 *
 * @author flutterdash@qq.com
 * @since 2021/7/26 17:09
 */
object KeyWords {
    /** 通用的用户名标识, 通常在用在jwt和http通信的requestBody中  */
    const val uid = "uid"
    const val username = "username"
    const val roleCode = "roleCode"
    const val appId = "appId"

    object PATH {
        const val login = "/account/login"
    }

    /** 用于shiro标记request的处理状态, 假如request经过某些步骤, 则request中有此属性 */
    object SHIRO {
        const val mark = "jwtShiroFilter.FILTERED"
        const val filter = "shiroFilter"
    }

    /** http 属性 */
    object HTTP {
        const val JWT_MARK = "x-auth-token"
        const val CHARSET_ENCODING = "UTF-8"
        const val JSON_CONTENT_TYPE = "application/json;charset=utf-8"
    }

    /** http 响应状态码 */
    object STATUS {
        const val SC_NON_AUTHORITATIVE_INFORMATION = 203 // 授权失败
        const val UNAUTHORIZED = 401                     // 未经授权
        const val INTERNAL_SERVER_ERROR = 500            // 服务器内部错误
    }

    /** redis存储用户 token 的前缀 */
    object REDIS {
        const val TOKEN_PREFIX = "token"
        const val TOKEN_REFRESH_INTERVAL: Long = 7200    // token 失效, 需要重新登陆, 单位(秒)
    }
}
